package day230513;

import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Scanner;

/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 * @date 2023/5/14 15:35
 * 走迷宫
 */
public class Main02 {

    private static final int[][] direction = {
            {-1, 0, 1, 0}, // 上 右 下 左 x
            {0, 1, 0, -1} // 上 右 下 左 y
    }; // 方向数组

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            char[][] map = new char[10][10]; // 用于存储迷宫
            // 录入迷宫数据
            for (int i = 0; i < map.length; i++) {
                map[i] = scan.next().toCharArray();
            }
            // 用于标记是否已经访问过
            boolean[][] visited = new boolean[10][10];
            // 定义起点和终点
            int startX = 0, startY = 1, endX = 9, endY = 8;
            // 使用 BFS 寻路
            int minStep = bfs(startX, startY, endX, endY, map, visited, new ArrayDeque<>());
            System.out.println(minStep);
        }
        scan.close();
    }

    // 广度优先搜索
    private static int bfs(int startX, int startY, int endX, int endY, char[][] map, boolean[][] visited, Deque<int[]> queue) {
        // 先将起点入队
        queue.offer(new int[]{startX, startY, 0});
        visited[startX][startY] = true;
        // 依次出队, 并访问四个方向, 直到找到终点为止
        while (!queue.isEmpty()) {
            int[] pop = queue.pop();
            // 如果出队的是终点说明已经找到
            if (pop[0] == endX && pop[1] == endY) {
                return pop[2];
            }
            // 遍历四个方向, 将符合条件的入队
            for (int i = 0; i < 4; i++) {
                int curX = pop[0] + direction[0][i];
                int curY = pop[1] + direction[1][i];
                int curStep = pop[2] + 1;
                // 检验边界
                if (curX >= 0 && curX < 10 && curY >= 0 && curY < 10 && map[curX][curY] == '.' &&  !visited[curX][curY]) {
                    queue.offer(new int[]{curX, curY, curStep});
                    visited[curX][curY] = true;
                }
            }
        }
        return -1; // 找不到出口
    }
}
